package cn.edu.hyit.hjq.volunteems.backend.service;

import cn.edu.hyit.hjq.volunteems.backend.dto.reault.JsonResult;
import cn.edu.hyit.hjq.volunteems.backend.dto.request.RegisterRequest;
import cn.edu.hyit.hjq.volunteems.backend.pojo.User;

import java.util.List;

public interface UserService {

    /**
     * 用户注册方法
     *
     * @param registerRequest 用户注册请求对象，包含用户名和密码等信息
     * @return 返回一个包含结果信息的JsonResult对象
     *
     * 此方法首先检查用户名是否已存在于数据库中，如果存在，则抛出运行时异常，提示用户名已存在
     * 如果用户名不存在，则对用户密码进行加密处理，并将用户信息保存到数据库中
     * 最后，返回一个表示操作成功的JsonResult对象
     */
    public JsonResult<?> registerUser(RegisterRequest registerRequest);

    /**
     * 认证用户身份
     * 该方法通过用户名和密码验证用户身份，并在验证成功后生成一个JWT Token
     * 如果用户名或密码错误，将抛出运行时异常
     *
     * @param username 用户名，用于登录系统
     * @param password 密码，用于验证用户身份
     * @return 返回一个包含JWT Token的JsonResult对象
     * @throws RuntimeException 如果用户名或密码错误，将抛出此异常
     */
    public JsonResult<String> authenticateUser(String username, String password);

    /**
     * 获取所有用户列表
     *
     * @return 返回一个包含所有用户信息的JsonResult对象
     */
    public JsonResult<List<User>> getUserList();

    /**
     * 更新用户状态
     *
     * @param userId 用户ID
     * @return 返回一个包含操作结果的JsonResult对象
     */
    public JsonResult<String> ConvertUser(String userId);
}
